package com.adisi.objetos;

import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date;

import com.adisi.bd.PuntoRutaDatos;
import com.adisi.bd.ViajeDatos;

public class ViajeManager {

	public static void grabarUnViaje(Viaje viaje) throws Exception{
		ViajeDatos vd = new ViajeDatos();
		
		try {
			vd.grabarUnViaje(viaje);
		} catch (Exception e) {
			throw e;
		}
		
		if(viaje.getEstado()==EstadoViaje.VIAJANDO) {
			Jornada jornada = viaje.getJornada();
			jornada.setEstado(JornadaEstado.VIAJANDO);
			JornadaManager.actualizar(jornada );
		}
	}
	
	
	public static void cerrarViaje(Viaje viaje, BigDecimal kms) throws Exception {
		ViajeDatos vd = new ViajeDatos();
		
		viaje.setEstado(EstadoViaje.CERRADO);
		viaje.setFechaHoraFin(new Date());
		
		try {
			vd.grabarUnViaje(viaje);
		} catch (Exception e) {
			throw e;
		}
		
		Jornada jornada = viaje.getJornada();
		jornada.setEstado(JornadaEstado.DISPONIBLE);
		JornadaManager.actualizar(jornada );
		
		AutoManager.actualizarKilometraje(jornada.getAuto(), kms);
			
	}
	
	
	public static Viaje conseguirUnViaje(int idViaje) throws Exception {
		ViajeDatos vd = new ViajeDatos();
		
		Viaje viaje = null;
		
		viaje = vd.conseguirUnViaje(idViaje);
		
		return viaje;
	}

	public static Viaje conseguirUnViaje(String imei) throws Exception {
		ViajeDatos vd = new ViajeDatos();
		
		Viaje viaje = null;
		
		viaje = vd.conseguirUnViaje(imei);
		
		return viaje;
	}

	public static ArrayList<Viaje> conseguirTodosLosViajes(Jornada jornada) throws Exception {
		ViajeDatos vd = new ViajeDatos();
		
		ArrayList<Viaje> viajes = new ArrayList<Viaje>();
		
		viajes = vd.conseguirTodosLosViajes(jornada);
		
		return viajes; 
	}
	
	public static void grabarPuntoRuta(PuntoRuta punto) throws Exception {
		//ViajeDatos vd = new ViajeDatos();
		
		//Viaje viaje = vd.conseguirUnViaje(punto.getImei());
		
		PuntoRutaDatos prd = new PuntoRutaDatos();
		
		prd.grabarNuevoPunto(punto);
		
	}
	
	public static void cargarRuta(Viaje viaje) throws Exception {
		
		PuntoRutaDatos prd = new PuntoRutaDatos();
		try {
			ArrayList<PuntoRuta> puntos = prd.conseguirTodosLosPuntos(viaje.getIdViaje());
		
			viaje.setPuntos(puntos);
		}
		catch (Exception e) {
			throw e;
		}
		
	}
}
